🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / feature / node / src / main / kotlin / org / meshtastic / feature / node / metrics / EnvironmentMetrics.kt
Displaying Raw • Download
feature/node/src/main/kotlin/org/meshtastic/feature/node/metrics/EnvironmentMetrics.kt 78274c792318331b11ab64cd28e58e829875b8c2 (78274c79) Text, 17.67 KB
T8b949e/*
* Copyright (c) 2025 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.node.metrics
Tff7b72import T7ee787androidx.compose.foundation.layout.Arrangement
Tff7b72import T7ee787androidx.compose.foundation.layout.Column
Tff7b72import T7ee787androidx.compose.foundation.layout.Row
Tff7b72import T7ee787androidx.compose.foundation.layout.Spacer
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxHeight
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxSize
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxWidth
Tff7b72import T7ee787androidx.compose.foundation.layout.padding
Tff7b72import T7ee787androidx.compose.foundation.layout.width
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyColumn
Tff7b72import T7ee787androidx.compose.foundation.lazy.items
Tff7b72import T7ee787androidx.compose.foundation.text.selection.SelectionContainer
Tff7b72import T7ee787androidx.compose.material3.Card
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.material3.Scaffold
Tff7b72import T7ee787androidx.compose.material3.Surface
Tff7b72import T7ee787androidx.compose.material3.Text
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.collectAsState
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.compose.runtime.mutableStateOf
Tff7b72import T7ee787androidx.compose.runtime.remember
Tff7b72import T7ee787androidx.compose.runtime.setValue
Tff7b72import T7ee787androidx.compose.ui.Alignment
Tff7b72import T7ee787androidx.compose.ui.Modifier
Tff7b72import T7ee787androidx.compose.ui.text.TextStyle
Tff7b72import T7ee787androidx.compose.ui.text.font.FontWeight
Tff7b72import T7ee787androidx.compose.ui.tooling.preview.Preview
Tff7b72import T7ee787androidx.compose.ui.unit.dp
Tff7b72import T7ee787androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
Tff7b72import T7ee787androidx.lifecycle.compose.collectAsStateWithLifecycle
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.meshtastic.core.model.util.UnitConversions.celsiusToFahrenheit
Tff7b72import T7ee787org.meshtastic.core.strings.Res
Tff7b72import T7ee787org.meshtastic.core.strings.current
Tff7b72import T7ee787org.meshtastic.core.strings.gas_resistance
Tff7b72import T7ee787org.meshtastic.core.strings.humidity
Tff7b72import T7ee787org.meshtastic.core.strings.iaq
Tff7b72import T7ee787org.meshtastic.core.strings.iaq_definition
Tff7b72import T7ee787org.meshtastic.core.strings.lux
Tff7b72import T7ee787org.meshtastic.core.strings.radiation
Tff7b72import T7ee787org.meshtastic.core.strings.soil_moisture
Tff7b72import T7ee787org.meshtastic.core.strings.soil_temperature
Tff7b72import T7ee787org.meshtastic.core.strings.temperature
Tff7b72import T7ee787org.meshtastic.core.strings.uv_lux
Tff7b72import T7ee787org.meshtastic.core.strings.voltage
Tff7b72import T7ee787org.meshtastic.core.ui.component.IaqDisplayMode
Tff7b72import T7ee787org.meshtastic.core.ui.component.IndoorAirQuality
Tff7b72import T7ee787org.meshtastic.core.ui.component.MainAppBar
Tff7b72import T7ee787org.meshtastic.core.ui.component.OptionLabel
Tff7b72import T7ee787org.meshtastic.core.ui.component.SlidingSelector
Tff7b72import T7ee787org.meshtastic.feature.node.metrics.CommonCharts.DATE_TIME_FORMAT
Tff7b72import T7ee787org.meshtastic.feature.node.metrics.CommonCharts.MS_PER_SEC
Tff7b72import T7ee787org.meshtastic.feature.node.model.TimeFrame
Tff7b72import T7ee787org.meshtastic.proto.TelemetryProtos
Tff7b72import T7ee787org.meshtastic.proto.TelemetryProtos.Telemetry
Tff7b72import T7ee787org.meshtastic.proto.copy
Tf0883e@Composable
Tff7b72fun Td2a8ffEnvironmentMetricsScreenTb4b4b4(Te6edf3viewModelTb4b4b4: Te6edf3MetricsViewModel Tff7b72= Te6edf3hiltViewModelTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3onNavigateUpTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3state Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3stateTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3environmentState Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3environmentStateTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3selectedTimeFrame Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3timeFrameTb4b4b4.Te6edf3collectAsStateTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3graphData Tff7b72= Te6edf3environmentStateTb4b4b4.Te6edf3environmentMetricsFilteredTb4b4b4(Te6edf3selectedTimeFrameTb4b4b4, Te6edf3stateTb4b4b4.Te6edf3isFahrenheitTb4b4b4)
Tff7b72val Te6edf3data Tff7b72= Te6edf3graphDataTb4b4b4.Te6edf3metrics
Tff7b72val Te6edf3processedTelemetriesTb4b4b4: Te6edf3ListTff7b72<Te6edf3TelemetryTff7b72> Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3stateTb4b4b4.Te6edf3isFahrenheitTb4b4b4) Tb4b4b4{
Te6edf3dataTb4b4b4.Te6edf3map Tb4b4b4{ Te6edf3telemetry Tff7b72-Tff7b72>
Tff7b72val Te6edf3temperatureFahrenheit Tff7b72= Te6edf3celsiusToFahrenheitTb4b4b4(Te6edf3telemetryTb4b4b4.Te6edf3environmentMetricsTb4b4b4.Te6edf3temperatureTb4b4b4)
Tff7b72val Te6edf3soilTemperatureFahrenheit Tff7b72= Te6edf3celsiusToFahrenheitTb4b4b4(Te6edf3telemetryTb4b4b4.Te6edf3environmentMetricsTb4b4b4.Te6edf3soilTemperatureTb4b4b4)
Te6edf3telemetryTb4b4b4.Te6edf3copy Tb4b4b4{
Te6edf3environmentMetrics Tff7b72=
Te6edf3telemetryTb4b4b4.Te6edf3environmentMetricsTb4b4b4.Te6edf3copy Tb4b4b4{
Te6edf3temperature Tff7b72= Te6edf3temperatureFahrenheit
Te6edf3soilTemperature Tff7b72= Te6edf3soilTemperatureFahrenheit
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3data
Tb4b4b4}
Tff7b72var Te6edf3displayInfoDialog Tff7b72by Te6edf3remember Tb4b4b4{ Te6edf3mutableStateOfTb4b4b4(Tff7b72falseTb4b4b4) Tb4b4b4}
Te6edf3ScaffoldTb4b4b4(
Te6edf3topBar Tff7b72= Tb4b4b4{
Te6edf3MainAppBarTb4b4b4(
Te6edf3title Tff7b72= Te6edf3stateTb4b4b4.Te6edf3nodeTff7b72?.Te6edf3userTff7b72?.Te6edf3longName Tff7b72?: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Te6edf3ourNode Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3showNodeChip Tff7b72= Tff7b72falseTb4b4b4,
Te6edf3canNavigateUp Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3onNavigateUp Tff7b72= Te6edf3onNavigateUpTb4b4b4,
Te6edf3actions Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3onClickChip Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{ Te6edf3innerPadding Tff7b72-Tff7b72>
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3innerPaddingTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3displayInfoDialogTb4b4b4) Tb4b4b4{
Te6edf3LegendInfoDialogTb4b4b4(
Te6edf3pairedRes Tff7b72= Te6edf3listOfTb4b4b4(Te6edf3PairTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3iaqTb4b4b4, Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3iaq_definitionTb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3onDismiss Tff7b72= Tb4b4b4{ Te6edf3displayInfoDialog Tff7b72= Tff7b72false Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3EnvironmentMetricsChartTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3fillMaxHeightTb4b4b4(Te6edf3fraction Tff7b72= T79c0ff0.33fTb4b4b4)Tb4b4b4,
Te6edf3telemetries Tff7b72= Te6edf3processedTelemetriesTb4b4b4.Te6edf3reversedTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3graphData Tff7b72= Te6edf3graphDataTb4b4b4,
Te6edf3selectedTime Tff7b72= Te6edf3selectedTimeFrameTb4b4b4,
Te6edf3promptInfoDialog Tff7b72= Tb4b4b4{ Te6edf3displayInfoDialog Tff7b72= Tff7b72true Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Te6edf3SlidingSelectorTb4b4b4(
Te6edf3TimeFrameTb4b4b4.Te6edf3entriesTb4b4b4.Te6edf3toListTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3selectedTimeFrameTb4b4b4,
Te6edf3onOptionSelected Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3setTimeFrameTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{
Te6edf3OptionLabelTb4b4b4(Te6edf3stringResourceTb4b4b4(Tffa657itTb4b4b4.Te6edf3strResTb4b4b4)Tb4b4b4)
Tb4b4b4}
Te6edf3LazyColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxSizeTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4(Te6edf3processedTelemetriesTb4b4b4) Tb4b4b4{ Te6edf3telemetry Tff7b72-Tff7b72> Te6edf3EnvironmentMetricsCardTb4b4b4(Te6edf3telemetryTb4b4b4, Te6edf3stateTb4b4b4.Te6edf3isFahrenheitTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffTemperatureDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4: Te6edf3TelemetryProtosTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4, Te6edf3environmentDisplayFahrenheitTb4b4b4: Tffa657BooleanTb4b4b4) Tb4b4b4{
Te6edf3envMetricsTb4b4b4.Te6edf3temperatureTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3temperature Tff7b72-Tff7b72>
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3temperatureTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3textFormat Tff7b72= Tff7b72if Tb4b4b4(Te6edf3environmentDisplayFahrenheitTb4b4b4) Ta5d6ff"Ta5d6ff%s %.1f°FTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ff%s %.1f°CTa5d6ff"
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3textFormatTb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3temperatureTb4b4b4)Tb4b4b4, Te6edf3temperatureTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffHumidityAndBarometricPressureDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4: Te6edf3TelemetryProtosTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hasHumidity Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3relativeHumidityTff7b72?.Te6edf3let Tb4b4b4{ Tff7b72!Tffa657itTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4) Tb4b4b4} Tff7b72=Tff7b72= Tff7b72true
Tff7b72val Te6edf3hasPressure Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3barometricPressureTff7b72?.Te6edf3let Tb4b4b4{ Tff7b72!Tffa657itTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4) Tff7b72&Tff7b72& Tffa657it Tff7b72> T79c0ff0 Tb4b4b4} Tff7b72=Tff7b72= Tff7b72true
Tff7b72if Tb4b4b4(Te6edf3hasHumidity Tff7b72|Tff7b72| Te6edf3hasPressureTb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4,
Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4,
Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3hasHumidityTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3humidity Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3relativeHumidityTff7b72!!
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff%s %.2f%%Ta5d6ff"Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3humidityTb4b4b4)Tb4b4b4, Te6edf3humidityTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3hasPressureTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3pressure Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3barometricPressureTff7b72!!
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff%.2f hPaTa5d6ff"Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3pressureTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3vertical Tff7b72= T79c0ff0.Te6edf3dpTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffSoilMetricsDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4: Te6edf3TelemetryProtosTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4, Te6edf3environmentDisplayFahrenheitTb4b4b4: Tffa657BooleanTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(
Te6edf3envMetricsTb4b4b4.Te6edf3soilTemperature Tff7b72!Tff7b72= Tff7b72null Tff7b72|Tff7b72|
Tb4b4b4(Te6edf3envMetricsTb4b4b4.Te6edf3soilMoisture Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Te6edf3envMetricsTb4b4b4.Te6edf3soilMoisture Tff7b72!Tff7b72= Tffa657IntTb4b4b4.Te6edf3MIN_VALUETb4b4b4)
Tb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3soilTemperatureTextFormat Tff7b72= Tff7b72if Tb4b4b4(Te6edf3environmentDisplayFahrenheitTb4b4b4) Ta5d6ff"Ta5d6ff%s %.1f°FTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ff%s %.1f°CTa5d6ff"
Tff7b72val Te6edf3soilMoistureTextFormat Tff7b72= Ta5d6ff"Ta5d6ff%s %d%%Ta5d6ff"
Te6edf3envMetricsTb4b4b4.Te6edf3soilMoistureTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3soilMoistureValue Tff7b72-Tff7b72>
Tff7b72if Tb4b4b4(Te6edf3soilMoistureValue Tff7b72!Tff7b72= Tffa657IntTb4b4b4.Te6edf3MIN_VALUETb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72=
Te6edf3soilMoistureTextFormatTb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3soil_moistureTb4b4b4)Tb4b4b4, Te6edf3soilMoistureValueTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3envMetricsTb4b4b4.Te6edf3soilTemperatureTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3soilTemperature Tff7b72-Tff7b72>
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3soilTemperatureTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72=
Te6edf3soilTemperatureTextFormatTb4b4b4.Te6edf3formatTb4b4b4(
Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3soil_temperatureTb4b4b4)Tb4b4b4,
Te6edf3soilTemperatureTb4b4b4,
Tb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffLuxUVLuxDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4: Te6edf3TelemetryProtosTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hasLux Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3lux Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3envMetricsTb4b4b4.Te6edf3luxTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3hasUvLux Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3uvLux Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3envMetricsTb4b4b4.Te6edf3uvLuxTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3hasLux Tff7b72|Tff7b72| Te6edf3hasUvLuxTb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3hasLuxTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3luxValue Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3luxTff7b72!!
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff%s %.0f lxTa5d6ff"Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3luxTb4b4b4)Tb4b4b4, Te6edf3luxValueTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3hasUvLuxTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3uvLuxValue Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3uvLuxTff7b72!!
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff%s %.0f UVlxTa5d6ff"Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3uv_luxTb4b4b4)Tb4b4b4, Te6edf3uvLuxValueTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffVoltageCurrentDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4: Te6edf3TelemetryProtosTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3hasVoltage Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3voltage Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3envMetricsTb4b4b4.Te6edf3voltageTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3hasCurrent Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3current Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3envMetricsTb4b4b4.Te6edf3currentTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3hasVoltage Tff7b72|Tff7b72| Te6edf3hasCurrentTb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3hasVoltageTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3voltage Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3voltageTff7b72!!
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff%s %.2f VTa5d6ff"Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3voltageTb4b4b4)Tb4b4b4, Te6edf3voltageTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3hasCurrentTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3current Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3currentTff7b72!!
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff%s %.2f mATa5d6ff"Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3currentTb4b4b4)Tb4b4b4, Te6edf3currentTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffGasCompositionDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4: Te6edf3TelemetryProtosTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3iaqValue Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3iaq
Tff7b72val Te6edf3gasResistance Tff7b72= Te6edf3envMetricsTb4b4b4.Te6edf3gasResistance
Tff7b72if Tb4b4b4(Tb4b4b4(Te6edf3iaqValue Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Te6edf3iaqValue Tff7b72!Tff7b72= Tffa657IntTb4b4b4.Te6edf3MIN_VALUETb4b4b4) Tff7b72|Tff7b72| Tb4b4b4(Te6edf3gasResistanceTff7b72?.Te6edf3isFiniteTb4b4b4(Tb4b4b4) Tff7b72=Tff7b72= Tff7b72trueTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3iaqValue Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Te6edf3iaqValue Tff7b72!Tff7b72= Tffa657IntTb4b4b4.Te6edf3MIN_VALUETb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3verticalAlignment Tff7b72= Te6edf3AlignmentTb4b4b4.Te6edf3CenterVerticallyTb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3iaqTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Te6edf3SpacerTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3widthTb4b4b4(T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4)
Te6edf3IndoorAirQualityTb4b4b4(Te6edf3iaq Tff7b72= Te6edf3iaqValueTb4b4b4, Te6edf3displayMode Tff7b72= Te6edf3IaqDisplayModeTb4b4b4.Te6edf3DotTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3gasResistance Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Tff7b72!Te6edf3gasResistanceTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff%s %.2f OhmTa5d6ff"Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3gas_resistanceTb4b4b4)Tb4b4b4, Te6edf3gasResistanceTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
T8b949e// These are in a differnt proto ...
T8b949e// envMetrics.co2?.let { co2 ->
T8b949e// Spacer(modifier = Modifier.height(4.dp))
T8b949e// Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) {
T8b949e// Text(
T8b949e// text = "%s %.0f ppm".format(stringResource(Res.string.co2), co2),
T8b949e// color = MaterialTheme.colorScheme.onSurface,
T8b949e// fontSize = MaterialTheme.typography.labelLarge.fontSize,
T8b949e// )
T8b949e// }
T8b949e// }
T8b949e// envMetrics.tvoc?.let { tvoc ->
T8b949e// Spacer(modifier = Modifier.height(4.dp))
T8b949e// Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween) {
T8b949e// Text(
T8b949e// text = "%s %.0f ppb".format(stringResource(Res.string.tvoc), tvoc),
T8b949e// color = MaterialTheme.colorScheme.onSurface,
T8b949e// fontSize = MaterialTheme.typography.labelLarge.fontSize,
T8b949e// )
T8b949e// }
T8b949e// }
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffRadiationDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4: Te6edf3TelemetryProtosTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4) Tb4b4b4{
Te6edf3envMetricsTb4b4b4.Te6edf3radiationTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3radiation Tff7b72-Tff7b72>
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3radiationTb4b4b4.Te6edf3isNaNTb4b4b4(Tb4b4b4) Tff7b72&Tff7b72& Te6edf3radiation Tff7b72> T79c0ff0fTb4b4b4) Tb4b4b4{
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ff%s %.2f µR/hTa5d6ff"Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3radiationTb4b4b4)Tb4b4b4, Te6edf3radiationTb4b4b4)Tb4b4b4,
Te6edf3color Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3colorSchemeTb4b4b4.Te6edf3onSurfaceTb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffEnvironmentMetricsCardTb4b4b4(Te6edf3telemetryTb4b4b4: Te6edf3TelemetryTb4b4b4, Te6edf3environmentDisplayFahrenheitTb4b4b4: Tffa657BooleanTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3envMetrics Tff7b72= Te6edf3telemetryTb4b4b4.Te6edf3environmentMetrics
Tff7b72val Te6edf3time Tff7b72= Te6edf3telemetryTb4b4b4.Te6edf3time Tff7b72* Te6edf3MS_PER_SEC
Te6edf3CardTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3horizontal Tff7b72= T79c0ff8.Te6edf3dpTb4b4b4, Te6edf3vertical Tff7b72= T79c0ff4.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3Surface Tb4b4b4{ Te6edf3SelectionContainer Tb4b4b4{ Te6edf3EnvironmentMetricsContentTb4b4b4(Te6edf3telemetryTb4b4b4, Te6edf3environmentDisplayFahrenheitTb4b4b4) Tb4b4b4} Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffEnvironmentMetricsContentTb4b4b4(Te6edf3telemetryTb4b4b4: Te6edf3TelemetryTb4b4b4, Te6edf3environmentDisplayFahrenheitTb4b4b4: Tffa657BooleanTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3envMetrics Tff7b72= Te6edf3telemetryTb4b4b4.Te6edf3environmentMetrics
Tff7b72val Te6edf3time Tff7b72= Te6edf3telemetryTb4b4b4.Te6edf3time Tff7b72* Te6edf3MS_PER_SEC
Te6edf3ColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3paddingTb4b4b4(Te6edf3horizontal Tff7b72= T79c0ff2.Te6edf3dpTb4b4b4, Te6edf3vertical Tff7b72= T79c0ff2.Te6edf3dpTb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e/* Time and Temperature */
Te6edf3RowTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3ModifierTb4b4b4.Te6edf3fillMaxWidthTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3horizontalArrangement Tff7b72= Te6edf3ArrangementTb4b4b4.Te6edf3SpaceBetweenTb4b4b4) Tb4b4b4{
Te6edf3TextTb4b4b4(
Te6edf3text Tff7b72= Te6edf3DATE_TIME_FORMATTb4b4b4.Te6edf3formatTb4b4b4(Te6edf3timeTb4b4b4)Tb4b4b4,
Te6edf3style Tff7b72= Te6edf3TextStyleTb4b4b4(Te6edf3fontWeight Tff7b72= Te6edf3FontWeightTb4b4b4.Te6edf3BoldTb4b4b4)Tb4b4b4,
Te6edf3fontSize Tff7b72= Te6edf3MaterialThemeTb4b4b4.Te6edf3typographyTb4b4b4.Te6edf3labelLargeTb4b4b4.Te6edf3fontSizeTb4b4b4,
Tb4b4b4)
Te6edf3TemperatureDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4, Te6edf3environmentDisplayFahrenheitTb4b4b4)
Tb4b4b4}
Te6edf3HumidityAndBarometricPressureDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4)
Te6edf3SoilMetricsDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4, Te6edf3environmentDisplayFahrenheitTb4b4b4)
Te6edf3GasCompositionDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4)
Te6edf3LuxUVLuxDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4)
Te6edf3VoltageCurrentDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4)
Te6edf3RadiationDisplayTb4b4b4(Te6edf3envMetricsTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffMagicNumberTa5d6ff"Tb4b4b4) T8b949e// preview data
Tf0883e@PreviewTb4b4b4(Te6edf3showBackground Tff7b72= Tff7b72trueTb4b4b4)
Tf0883e@Composable
Tff7b72private Tff7b72fun Td2a8ffPreviewEnvironmentMetricsContentTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Build a fake EnvironmentMetrics using the generated proto builder APIs
Tff7b72val Te6edf3fakeEnvMetrics Tff7b72=
Te6edf3TelemetryProtosTb4b4b4.Te6edf3EnvironmentMetricsTb4b4b4.Te6edf3newBuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTemperatureTb4b4b4(T79c0ff2T79c0ff2.5fTb4b4b4)
Tb4b4b4.Te6edf3setRelativeHumidityTb4b4b4(T79c0ff5T79c0ff5.0fTb4b4b4)
Tb4b4b4.Te6edf3setBarometricPressureTb4b4b4(T79c0ff1T79c0ff0T79c0ff1T79c0ff3.25fTb4b4b4)
Tb4b4b4.Te6edf3setSoilMoistureTb4b4b4(T79c0ff3T79c0ff3Tb4b4b4)
Tb4b4b4.Te6edf3setSoilTemperatureTb4b4b4(T79c0ff1T79c0ff8.0fTb4b4b4)
Tb4b4b4.Te6edf3setLuxTb4b4b4(T79c0ff1T79c0ff0T79c0ff0.0fTb4b4b4)
Tb4b4b4.Te6edf3setUvLuxTb4b4b4(T79c0ff1T79c0ff0T79c0ff0.0fTb4b4b4)
Tb4b4b4.Te6edf3setVoltageTb4b4b4(T79c0ff3.7fTb4b4b4)
Tb4b4b4.Te6edf3setCurrentTb4b4b4(T79c0ff0.12fTb4b4b4)
Tb4b4b4.Te6edf3setIaqTb4b4b4(T79c0ff1T79c0ff0T79c0ff0Tb4b4b4)
Tb4b4b4.Te6edf3setRadiationTb4b4b4(T79c0ff0.15fTb4b4b4)
Tb4b4b4.Te6edf3setGasResistanceTb4b4b4(T79c0ff1T79c0ff2T79c0ff0T79c0ff0.0fTb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3fakeTelemetry Tff7b72=
Te6edf3TelemetryProtosTb4b4b4.Te6edf3TelemetryTb4b4b4.Te6edf3newBuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTimeTb4b4b4(Tb4b4b4(Te6edf3SystemTb4b4b4.Te6edf3currentTimeMillisTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1T79c0ff0T79c0ff0T79c0ff0Tb4b4b4)Tb4b4b4.Te6edf3toIntTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setEnvironmentMetricsTb4b4b4(Te6edf3fakeEnvMetricsTb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Te6edf3MaterialTheme Tb4b4b4{
Te6edf3Surface Tb4b4b4{ Te6edf3EnvironmentMetricsContentTb4b4b4(Te6edf3telemetry Tff7b72= Te6edf3fakeTelemetryTb4b4b4, Te6edf3environmentDisplayFahrenheit Tff7b72= Tff7b72falseTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.11s